#coding=utf-8
#脚本内容:购物流程支付方式为"线下支付"
#编写日期:2022-06-28
#编写人:xhs

import time #导入time.py文件,下面用于强制等待
#打开前台系统
from selenium.webdriver.support.select import Select

from public.publicOperation import *  #导入公共的操作中的所有的函数
from public.publicbusiness import *
from tool.tool import *   #导入工具文件中的函数
firefox=BrowserObject(1)  #调用自定义函数返回一个浏览器对象用firefox这个对象来接收
firefox.implicitly_wait(20)
openUrl('http://localhost/dbshop',firefox) #调用自定义函数打开dbhsop的首页
firefox.maximize_window()
firefox.find_element_by_link_text('登录').click() #点击登录链接
dbshop_login('cyy','123456',firefox)
firefox.find_element_by_xpath('//input[@name="keywords"]').send_keys('小米')#搜索框输入小米
firefox.find_element_by_xpath('//input[@class="search-btn iconfont"]').click()#点击搜索按钮
firefox.find_element_by_xpath('//a[@href="/dbshop/goods/8/2"]').click()#点击小米mix3图片
switch_page(2,firefox) #调用自定义函数切换页面
firefox.find_element_by_id('add_cart_submit').click()#点击加入购物车按钮
firefox.find_element_by_link_text('去购物车结算').click()#点击去购物车结算
firefox.find_element_by_link_text('去结算').click()#点击去结算
firefox.find_element_by_xpath('//input[@value="下一步"]').click()#点击下一步
firefox.find_element_by_xpath('//input[@name="payment_code" and @value="xxzf"]').click()#选择线下支付
firefox.find_element_by_xpath('//input[@value="确认订单"]').click()#点击确认订单
#在当前页面记录下订单号
orderNo=firefox.find_element_by_xpath('(//font[@color="color:#ED145B"])[2]').text #获取订单编号存到变量中
print(orderNo)
f=open('orderNO.txt','w') #以写的方式打开文件，文件是以相对路径的方式去查找
f.write(orderNo) #写入订单号到文件中
f.close()  #关闭文件
firefox.find_element_by_xpath('//input[@value="马上去支付"]').click()#点击马上去支付
firefox.find_element_by_id('state_info').send_keys('abcddd') #输入凭证信息
firefox.find_element_by_xpath('//button').click() #点击提交支付凭证
#上面都是dbhsop前台的操作现在要去后台操作
#关闭当前页面,
firefox.quit() #关闭对象,页面全部被关闭
#下面是dbshop的后台操作
firefox=BrowserObject(1)  #调用自定义函数返回一个浏览器对象用firefox这个对象来接收
firefox.implicitly_wait(20)#隐式等待
openUrl('http://localhost/dbshop/admin',firefox) #调用自定义函数打开dbhsop的首页
dbshop_bg_login('admin','123456',firefox)
menu2_operation('销售管理','订单管理',firefox)
#在搜索框输入订单编号
firefox.find_element_by_name('order_sn').send_keys(orderNo)
#点击搜索按钮
firefox.find_element_by_xpath('//button[@class="btn btn-small btn-primary"and @type="submit"]').click()
#点击编辑查看
firefox.find_element_by_link_text('编辑查看').click()
#点击付款操作
firefox.find_element_by_link_text('付款操作').click()
#处理下拉框
s=Select(firefox.find_element_by_id('pay_state'))
s.select_by_index(2) #选择已付款
#输入操作说明
firefox.find_element_by_id('state_info').send_keys('abcdddddd')
#点击提交保存
firefox.find_element_by_xpath('//button').click()
#点击发货操作
firefox.find_element_by_link_text('发货操作').click()
firefox.find_element_by_id('express_number').send_keys('1111') #输入快递单号
firefox.find_element_by_id('state_info').send_keys('abcdddddd')#输入操作说明
firefox.find_element_by_xpath('//button').click() #点击发货按钮
#回到前台进行收货操作
openUrl('http://localhost/dbshop',firefox) #调用自定义函数打开dbhsop的首页
firefox.find_element_by_link_text('登录').click() #点击登录链接
dbshop_login('cyy','123456',firefox)
#点击我的订单
firefox.find_element_by_link_text('我的订单').click()
#点击已发货
firefox.find_element_by_partial_link_text('已发货').click()
#输入订单号
firefox.find_element_by_name('search_order_sn').send_keys(orderNo)#输入订单号
#点击搜索按钮
firefox.find_element_by_xpath('//button[@class="btn btn-small btn-primary"]').click()
#点击确认收货按钮
firefox.find_element_by_xpath('//button[text()="确认收货"]').click()
firefox.find_element_by_xpath('//button').click()
#处理js弹框
time.sleep(2)
firefox.switch_to.alert.accept()
time.sleep(2)
#点击交易完成
firefox.find_element_by_partial_link_text('交易完成').click()
firefox.find_element_by_name('search_order_sn').send_keys(orderNo)#输入订单号
#点击搜索按钮
firefox.find_element_by_xpath('//button[@class="btn btn-small btn-primary"]').click()
#检查点(中间如果任何一个地方出了问题,检查点是无法通过的)
try:
    firefox.find_element_by_partial_link_text('订单详情').is_displayed()
except Exception as error:
    log = "dbshopST001购物流程_线下支付 执行失败"
    write_to_log(log)
    write_to_log(str(error))#调用函数写入日志
    assert False  # 手工设置一个报错信息
else:
    log = "dbshopST001购物流程_线下支付 执行成功"
    write_to_log(log)#调用函数写入日志
firefox.quit() #关闭对象





